package com.zjcloud.jwgl.service;

import java.util.List;
import com.zjcloud.jwgl.domain.ScSubject;

/**
 * 学科信息Service接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface IScSubjectService 
{
    /**
     * 查询学科信息
     * 
     * @param id 学科信息主键
     * @return 学科信息
     */
    public ScSubject selectScSubjectById(Long id);

    /**
     * 查询学科信息列表
     * 
     * @param scSubject 学科信息
     * @return 学科信息集合
     */
    public List<ScSubject> selectScSubjectList(ScSubject scSubject);

    /**
     * 新增学科信息
     * 
     * @param scSubject 学科信息
     * @return 结果
     */
    public int insertScSubject(ScSubject scSubject);

    /**
     * 修改学科信息
     * 
     * @param scSubject 学科信息
     * @return 结果
     */
    public int updateScSubject(ScSubject scSubject);

    /**
     * 批量删除学科信息
     * 
     * @param ids 需要删除的学科信息主键集合
     * @return 结果
     */
    public int deleteScSubjectByIds(Long[] ids);

    /**
     * 删除学科信息信息
     * 
     * @param id 学科信息主键
     * @return 结果
     */
    public int deleteScSubjectById(Long id);

    /**
     * 根据学科编码查询学科信息
     * 
     * @param subjectCode 学科编码
     * @return 学科信息
     */
    public ScSubject selectScSubjectByCode(String subjectCode);

    /**
     * 检查学科编码是否唯一
     * 
     * @param scSubject 学科信息
     * @return 结果
     */
    public String checkSubjectCodeUnique(ScSubject scSubject);

    /**
     * 根据分类查询学科列表
     * 
     * @param category 学科分类
     * @return 学科列表
     */
    public List<ScSubject> selectScSubjectByCategory(String category);

    /**
     * 根据适用学段查询学科列表
     * 
     * @param stage 适用学段
     * @return 学科列表
     */
    public List<ScSubject> selectScSubjectByStage(String stage);

    /**
     * 获取需要连排的学科列表
     * 
     * @return 学科列表
     */
    public List<ScSubject> selectContinuousSubjects();

    /**
     * 根据教室类型要求查询学科列表
     * 
     * @param classroomType 教室类型
     * @return 学科列表
     */
    public List<ScSubject> selectScSubjectByClassroomType(String classroomType);

    /**
     * 获取学科统计信息
     * 
     * @param subjectId 学科ID
     * @return 统计信息
     */
    public ScSubject getSubjectStatistics(Long subjectId);

    /**
     * 更新学科统计信息
     * 
     * @param subjectId 学科ID
     * @return 结果
     */
    public int updateSubjectStatistics(Long subjectId);
}